package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import cn.itcast.web.controller.BaseController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.util.StringUtil;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/company")
public class CompanyController extends BaseController {

    @Reference
    private CompanyService companyService;


    @RequestMapping("/list")
    public String list(@RequestParam(defaultValue = "1") Integer pageNum,
                       @RequestParam(defaultValue = "5") Integer pageSize) {


        Subject subject = SecurityUtils.getSubject();

        //发出了企业管理的权限检查请求
        subject.checkPermission("企业管理");

        PageInfo<Company> pageInfo = companyService.findByPage(pageNum, pageSize);
        //存储到请求域中

        request.setAttribute("pageInfo", pageInfo);
          //请求转到到页面
        return "company/company-list";
    }

    /*
        作用： 进入企业添加页面
        url:  /company/toAdd.do
        参数：没有
        返回值 : company-add
     */

    @RequestMapping("toAdd")
    public String toAdd() {
        return "company/company-add";
    }


    /*
        作用： 进入企业添加页面
        url:  /company/toAdd.do
        参数：没有
        返回值 : company-add
     */
    @RequestMapping("edit")
    public String edit(Company company) {
        //判断一个变量是否为空串,相当于上面的语句
        if (StringUtil.isEmpty(company.getId())) {
            //添加
            companyService.save(company);
        } else {

            //更新
            companyService.update(company);
        }


        return "redirect:/company/list.do"; //访问上面的list方法

    }



    /*
         作用 ： 进入更新企业的页面
         url :  /company/toUpdate.do?id=5b810ce0-be2b-4450-9fd3-d0856dd86a5f
        参数 : 企业id
        返回值 :company-update
     */
    @RequestMapping("toUpdate")
    public String toUpdate(String id) {

        //1. 根据企业的id查找企业

       Company company = companyService.findById(id);
        //2. 存储到request域中
        request.setAttribute("company",company);

        //3. 请求转发到company-update页面
        return "company/company-update";
    }



/*
         作用 ：删除
         url :/company/delete.do?id=02e1da04-43f8-42e1-a4c2-66e162c6f4a5
        参数 : id 企业id
        返回值 : 企业列表
     */


@RequestMapping("/delete")
      public String delete(String id){
          companyService.delete(id);
          return "redirect:/company/list.do";

      }

}




















